개발 prefix : get, find, fetch, load, retrieve - 차이점, 사용 규칙 알아보기
- 프로그래밍 언어를 사용할 때,
get
,find
,fetch
,load
,retrieve
접두사(prefix)가 메서드나 함수 이름에 사용되는 경우가 있습니다. db 나 외부 파일, api 에서 데이터를 가져오는 경우에 사용되는 경우가 많습니다. - 개발을 하다보니 일관성을 가지고 코드를 작성하고 싶었는데, 이러한 접두사들의 차이점과 사용처에 대해 궁금해졌습니다. 이러한 접두사들의 차이점과 사용처에 대해 좀 찾아보게 되었습니다.
- 네이밍의 경우 회사나 개발자마다 다르게 사용되는 경우가 있을 수 있습니다. 이번에는 일반적으로 사용되는 규칙을 찾아보려고 했고, 실제로는 사용처에 따라 다를 수 있습니다.
- 위 접두사들은 비슷해 보일 수 있지만, 각각의 의미와 사용되는 맥락이 조금은 다른 것 같습니다. 이들의 차이점을 알아보겠습니다.
- 큰 회사에서 정해진 개발 컨벤션을 가지고 개발을 진행해본 적이 없어, 관련 내용에 대한 지식이 다소 부족합니다. 내용이 정확하지 않을 수 있어서 참고하는 정도로 읽어주시면 감사드리겠습니다.
1. get
get
접두사는 특정 값을 불러오거나 접근하는 데 자주 사용됩니다. 이는 해당 작업이 단일 결과나 컬렉션에서 특정 항목을 반환한다는 것을 의미합니다. 예를 들면:
getUser()
- 단일 사용자 객체를 불러옵니다.getProductById(id)
- 제공된 ID에 해당하는 제품 객체를 불러옵니다.getUsers()
- 모든 사용자 객체를 불러옵니다.
2. find
find
접두사는 일치하는 조건을 가진 항목 또는 항목들을 검색하고 찾는 데 일반적으로 사용됩니다. get 과의 차이점은 find 는 검색, 찾는 것에 조금 더 초점이 맞추어져 있는 느낌이 들었습니다. 이는 해당 작업이 여러 결과나 항목들의 컬렉션을 반환한다는 것을 의미합니다. 예를 들면:
findUsersByRole(role)
- 특정 역할을 가진 모든 사용자를 찾습니다.findProductsByCategory(category)
- 특정 카테고리에 속하는 모든 제품을 찾습니다.findUsersByAge(age)
- 특정 나이에 해당하는 모든 사용자를 찾습니다.
2.1. find vs get
- 정해진 내용으로 나온 것은 아니지만, 인터넷에서 여러 사람이 이야기 한 내용을 보면
find
와get
의 차이점은 다음과 같습니다.- get : 확실하게 정해진 어떤 것을 가져오는 것에 초점을 맞추어져 있습니다. 단일 결과나 항목을 반환하며, 결과가 없는 경우로 잘 사용되지 않는 것 같습 니다.
- find : 검색, 찾는 것에 초점을 맞추어져 있습니다. 여러 결과나 항목들의 컬렉션을 반환하며, 검색 결과가 없을 수도 있습니다.
- How do you use "find" vs "get" prefix? 블로그 글의 예시가 해당 내용을 이해하는데 도움이 될 수 있습니다. 아래는 해당 글에서 가져온 예시입니다.
getOneById
: 해당 ID에 해당하는 결과가 없을 경우 에러를 발생시킵니다.findOneById
: 해당 ID에 해당하는 결과가 없을 경우 null 을 반환합니다.
public async getOneById(id: number): Promise<User> {
const user = await this.userRepository
.createQueryBuilder("u")
.where("u.id = :id", {id})
.getOne();
if (!user)
throw new Error(`User with ID "${id.toString()}" not found.`);
return user;
}
public async findOneById(id: number): Promise<User> {
const user = await this.userRepository
.createQueryBuilder("u")
.where("u.id = :id", {id})
.getOne();
return user;
}
3. fetch vs load vs retrieve
fetch
,load
,retrieve
접두사는 데이터를 가져오는 데 사용되는 다른 접두사입니다. 이들은 주로 네트워크에서 데이터를 가져오거나 데이터베이스에서 데이터를 가져오는 데 사용됩니다. 이들의 차이점은 명확하지 않지만, 일반적으로 다음과 같이 사용됩니다.fetch
: 네트워크에서 데이터를 가져오는 데 사용됩니다. 주로 API 호출과 관련이 있는 것 같습니다.load
: 데이터베이스나 S3 의 파일 데이터와 같은 외부 데이터를 가져오는 데 많이 사용됩니다.retrieve
: 데이터를 가져오는 데 사용됩니다.fetch
와load
보다 사용 빈도는 적은 것 같습니다.
4. 정리
get
은 단일 결과나 항목을 가져오는 데 사용되며,find
는 여러 결과나 항목들을 검색하는 데 사용되는 것 같습니다.fetch
,load
,retrieve
는 데이터를 가져오는 데 사용되며,fetch
는 네트워크에서 데이터를 가져오는 데 사용되고,load
는 데이터베이스나 파일 데이터를 가져오는 데 사용되며,retrieve
는 데이터를 가져오는 데 사용되는 것 같습니다.- 하지만
fetch
,load
,retrieve
의 사용 빈도는get
,find
보다 적고, 구분이 상대적으로 명확하지 않은 것 같습니다.
- 하지만
- 이러한 접두사들은 일반적인 사용 규칙이며, 실제로는 사용하는 곳이나 사용하는 프로그래밍 언어, 프레임워크에 따라 다를 수 있습니다. 정확한 사용법을 위해서는 프로젝트에 특정한 문서나 코딩 표준을 참조하시기 바랍니다.